package com.mibus.mibusmobile;

import android.os.Environment;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;


public class ErrorLog {
    private ConcurrentLinkedQueue<String> logs;
    private String nombreArchivo;
    private SimpleDateFormat dateFormater;

    public ErrorLog(String nombreArchivo){
        logs = new ConcurrentLinkedQueue<String>();
        this.nombreArchivo = nombreArchivo;
        dateFormater = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    }

    public boolean agregarLog(String log){
        return logs.add(dateFormater.format(new Date())+" "+log);
    }

    public boolean generarArchivoLog(){
        if(!logs.isEmpty()) {
            File archivo = new File(Environment.getExternalStorageDirectory() + "/miBus/" + nombreArchivo + ".txt");
            try {
                FileOutputStream fos = new FileOutputStream(archivo);
                OutputStreamWriter escritor = new OutputStreamWriter(fos);
                while (!logs.isEmpty()) {
                    escritor.write(logs.poll()+"\r \n");
                }
                escritor.close();
                limpiar();
                return true;
            } catch (IOException e) {
                e.printStackTrace();
                return false;
            }
        }else{
            return true;
        }
    }

    public void limpiar(){
        logs.clear();
    }
}
